package lk.icta.common.service;

import lk.icta.common.entity.Contacts;
import lk.icta.user.entity.User;

import java.util.List;

/**
 * @author Supun Nimesh Karunathilaka
 */
public interface ContactsManager {


    /**
     * Adding a Contact
     *
     * @param contacts contacts of the person to be added
     * @param user     The user requesting to add a contact
     */
    public void addContact(Contacts contacts, User user);

    /**
     * update a contact
     *
     * @param contacts contacts of the person to be updated
     * @param user     The user requesting to add a contact
     */
    public void updateContact(Contacts contacts, User user);

    /**
     * Deleting a Contact
     *
     * @param contacts Contact to be deleted
     * @param user     User requesting to delete the contact
     */
    public void deleteContact(Contacts contacts, User user);

    /**
     * get a contact  by contact id
     *
     * @param id   id of the contact
     * @param user user executing the operation
     * @return Contacts corresponding to the id
     */
    public Contacts getContactsByIdUKey(long id, User user);

    /**
     * Get all contacts (non-deleted)
     *
     * @return all non-deleted Contacts
     */
    public List<Contacts> getAllContacts();
}
